GO
对于if条件语句,简单的说,其语义类似于汉语里的如果……那么……。if条件语句是Linux运维人员在实际生产工作中使用得最频繁也是最重要的语句,因此,请务必重视if条件语句的知识,并牢固掌握。
1. if条件语句的语法
1.1. 单分支结构
if条件语句的单分支结构主题就是如果……,那么……
第一种语法:
第二种语法:
在这里:
<条件表达式>
可以是test
、[]
、[[]]
、(())
等条件表达式,甚至可以直接使用命令作为条件表达式。条件语句可以嵌套,即if语句里面还有if语句。弹药注意每个if条件语句中都要有一个与之对应的
fi
,每个if
和它下面最近的fi
成对搭配,语法示例如下:1234567if <条件表达式>thenif <条件表达式>then指令fifi通常在书写Shell条件语句编程时,要让成对的条件语句关键字的缩进相对应,以便于阅读浏览。
- 文件条件表达式
[ -f "$file1" ] && echo 1
就等价于下面的if条件语句:123if [ -f "$file1" ] ; thenecho 1fi
1.2. 双分支结构
if条件语句的双分支结构主题则为如果……,那么……,否则……
语法如下:
在这里:
- 也可以把
then
和if
放在一行用分号;
隔开 - 文件测试条件表达式
[ -f "$file1" ] && echo 1 || echo 0
就相当于下面的双分支的if条件语句:123456if [ -f "$file1" ]thenecho 1elseecho 0fi
1.3. 多分支结构
if条件语句多分支结构的主题为:如果……,那么……,否则如果……,那么……,否则如果……,那么……,…… 否则……
语法为:
在这里:
- 注意多分支
elif
的写法,每个elif
都要带有then
- 最后结尾的
else
后面没有then
2. if条件语句多种条件表达式语法
if条件语句(包括多分支if)的<条件表达式>
部分可以是test
、[]
、[[]]
、(())
等条件表达式,甚至还可以直接使用命令作为条件表达式,具体的语法如下:
test
条件表达式1234if test 表达式then指令fi[]
条件表达式1234if [ 字符串或算术表达式 ]then指令fi[[]]
条件测试表达式1234if [[ 字符串表达式 ]]then指令fi(())
条件表达式1234if ((算术表达式))then指令fi命令表达式
1234if 命令then指令if
提示:以上表达式除了语法不通之外,具体的应用是一致的,实际工作场景中,只需选择一种适合自己习惯的表达式就好。
3. 单分支if条件语句实践
把下面测试文件中条件表达式的语句改成if条件语句:
- 1、
[ -f /etc/hosts ] && echo "[1]"
- 2、
[[ -f /etc/hosts ]] && echo "[[1]]"
- 3、
test -f /etc/hosts && echo "test1"
参考答案如下:1234567891011121314151617# 1的答案if [ -f /etc/hosts ]thenecho "[1]"fi# 2的答案if [[ -f /etc/hosts ]]thenecho "[[1]]"fi# 3的答案if test -f /etc/hoststhenecho "test1"fi
OK